package mysql8学习.初级.第10章_创建和管理表;

/**
 *   DCL 中 COMMIT 和 ROLLBACK
 *  COMMIT:提交数据。
 *      一旦执行COMMIT，则数据就被永久的保存在了数据库中，意味着数据不可以回滚。
 *  ROLLBACK:回滚数据。
 *      一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。
 *
 *   对比 TRUNCATE TABLE 表名 和 DELETE FROM 表名
 *  相同点：都可以实现对表中所有数据的删除，同时保留表结构。
 *  不同点：
 * 	    TRUNCATE TABLE 表名： DDL
 * 	        一旦执行此操作，表数据全部清除。同时，数据是不可以回滚的。
 * 	    DELETE FROM 表名：    DML
 * 	        一旦执行此操作，表数据可以全部清除（不带WHERE）。同时，数据是可以实现回滚的。
 *  DDL 和 DML 的说明
 *   ① DDL的操作一旦执行，就不可回滚。
 *          指令SET autocommit = FALSE对DDL操作失效。
 *          (因为在执行完DDL=操作之后，一定会执行一次COMMIT。
 *          而此COMMIT操作不受SET autocommit = FALSE影响的。
 *          而且，如果先进行了DML在进行了DDL,由于DDL自动执行了COMMIT，
 *          会导致这个DML也回滚不了，因为COMMIT了)
 *
 *   ② DML的操作默认情况，一旦执行，也是不可回滚的。
 *          但是，如果在执行DML之前，执行了 SET autocommit = FALSE，
 *          则执行的DML操作就可以实现回滚。
 *
 */
public class H_数据回滚 {
    public static void main(String[] args) {

    }
}
